OCX控件接口调用; Unity3D RTMP/RTSP直播播放器SDK 业内首家Windows支持Unity3D的超低延迟RTMP/RTSP直播播放器SDK,支持快照、录像、实时静音、view RTMP超低延迟直播播放器SDK(支持RTMP H.265扩展播放); RTSP直播播放器SDK 支持RTSP H.265播放及扩展录像、业内为数不多真正好用的RTSP播放器SDK; Unity3D RTMP/RTSP直播播放器SDK 业内首家Android支持Unity3D的超低延迟RTMP/RTSP直播播放器SDK,支持快照、录像、实时静音、view旋转、快速切换URL等特性; 录像SDK RTMP超低延迟直播播放器SDK(支持RTMP H.265扩展播放); RTSP直播播放器SDK 支持RTSP H.265播放及扩展录像、业内为数不多真正好用的RTSP播放器SDK; Unity3D RTMP/RTSP直播播放器SDK 业内首家iOS支持Unity3D的超低延迟RTMP/RTSP直播播放器SDK,支持快照、录像、实时静音、view旋转、快速切换URL等特性; 录像SDK 支持拉取
好多开发者使用场景,除了实现基础的低延迟RTSP、RTMP播放外,还需要实现RTSP、RTMP流数据的本地录像功能。 本文以大牛直播SDK的Windows平台播放模块为例,介绍下如何实现RTSP、RTMP流录像。 功能设计 [拉流]支持拉取RTSP流录像; [拉流]支持拉取RTMP流录像; [逻辑分离]和播放、转发功能完全分离,支持随时录像; [参数设置]支持设置单个录像文件大小、录像路径等,并支持纯音频、纯视频 、音视频录制模式; [音频转码]支持音频(PCMU/PCMA,Speex等)转AAC后再录像; [265支持]支持RTSP/RTMP H.265录制到MP4文件; [事件回调]从开始录像,到录像结束均有 = NT_SP_E_EVENT_ID_BASE | 0xB, /*rtsp status code上报, 目前只上报401, param1表示status code*/ /* 接下来请从
随着VR类、游戏类场景的快速发展,开发者对Unity3d低延迟的直播需求量越来越大,前两年,大牛直播SDK发布了Windows平台、Android平台和iOS平台的Unity3d RTMP和RTSP的播放 本文以Android平台为例,我们的实现:基于大牛直播SDK现有非常成熟的native RTMP和RTSP播放模块,回调解码后的原始数据,传递给Unity3d,实现相应的绘制即可,对应demo,可以参考 Native RTSP或RTSP直播播放SDK回调RGB/YUV420/NV12等其中的一种未压缩的图像格式; 2. Unity3D创建相应的RGB/YUV420等Shader; 3.Unity3D从各个平台获取图像数据来填充纹理即可。 = 10; NT_U3D_SetRTSPTimeout(player_handle_, rtsp_timeout); //设置RTSP超时时间
技术背景我们在做RTSP、RTMP直播播放器的时候,有个比较重要的功能,就是拉流端实时录像,包括设置单个录像文件大小、文件前缀、audio转AAC、只录制视频或只录制音频、开始录像、停止录像事件状态回调等 我们录像模块,覆盖了RTMP、轻量级RTSP服务、RTSP|RTMP播放端录像,平台覆盖了Windows、Linux、Android、iOS,主要功能设计如下: [拉流]支持拉取RTSP流录像; [拉流 ]支持拉取RTMP流录像; [推流端录像]支持RTMP|RTSP推送端同步录像; [轻量级RTSP服务录像]支持轻量级RTSP服务SDK同步录像; [推流端录像实时暂停/恢复]支持推送端录像过程中实时暂停录像 、恢复录像; [逻辑分离]大牛直播录像SDK不同于普通录像接口,更智能,和推送、播放、转发、内置轻量级RTSP服务SDK功能完全分离,支持随时录像; [url切换]在录像过程中,支持切换不同URL,如两个 总结RTSP、RTMP播放端录像,我们的设计,是播放和录像分离,可以只录像或只播放,如果同时录像和播放,只需要一个拉流实例来完成。
各端保持接口与能力统一,同时根据平台特性进行优化(如移动端硬编、Unity3D 共享纹理渲染)。 工程要点:录像 I/O 优化避免阻塞推流线程,SEI 数据与视频帧时钟对齐,确保控制指令与画面精准对应。 组合方案: 推流:RTMP Push SDK(可配合 SRT 网关) 中转:多路 RTSP 转 RTMP 推送 SDK 播放:HTTP-FLV Playback SDK(Android/Unity3D ) Playback:RTSP Playback SDK(Windows / Android / iOS / Unity3D) Enhancement:本地 Recording SDK(用于录像、回放 录像模块2.
好多开发者问我们,Unity环境下,除了RTSP或RTMP的播放,如果有录像诉求,怎么实现?实际上录像相对播放来说,更简单一些,因为不涉及到绘制,只要拉流下来数据,直接写mp4文件就好了。 (考虑到磁盘读写IO,Windows平台一般不建议多录录制),录像的话,需要考虑的是,设置好文件录制规则,比如,是否录制纯音频或纯视频、单个录制文件大小、文件录制目录等,并设置录像回调事件:/* * SmartPlayerWinMono.cs file_name); } else if (status == 2) //status 2:表示已经写好一个录像文件 { Debug.Log("RecordCallBack, 已生成一个录像文件 NTSmartPlayerSDK.NT_SP_Close(videoctrl[sel].player_handle_); videoctrl[sel].player_handle_ = IntPtr.Zero; }}以上是Unity平台RTMP或RTSP 播放端录像相关接口设计和调用实例,感兴趣的开发者可以参考。
多协议播放模块(RTSP / RTMP / HTTP-FLV) 统一播放接口,端到端延迟 100–200 ms,可硬件解码、帧级回调、截图与缩放,适配 Android、Windows、Linux、Unity3D 轻量级 RTSP 服务模块 无复杂依赖,可在本地或边缘节点快速启用,使设备端直接输出 RTSP 流,构建内网级实时分发。 GB28181 接入模块 让不具备国标能力的移动或嵌入式终端快速接入,支持位置订阅、图像抓拍、语音对讲、录像回放等。 录像模块(推送端 / 播放端) 支持边推边录、断点续录与 MP4 / FLV 封装,音视频同步记录,满足安防、金融、工业等场景的合规要求。 经过多年的演进,大牛直播SDK 已形成一套可直接嵌入业务系统的通用能力: 从 RTMP 推流、RTSP 播放 到 HTTP-FLV / WS-FLV 分发, 从 GB28181 设备接入 到 录像、转发
跨平台适配:无论是 Windows/Linux 服务器,还是 Android/iOS 终端,甚至 Unity3D/VR 场景,都能无缝嵌入。 录像与快照能力:为 AI 样本采集与模型回溯提供便利。 Unity3D/VR 集成:支持第一视角的沉浸式远程操控,让操作者如同“进入机器人身体”般进行操作。 在新能源赛道中,大牛直播SDK可以发挥以下作用: 生产线视频巡检:通过 SDK 集成的多路 RTSP 播放与录像功能,工厂可以实时查看关键工序,如涂布、叠片、电解液注入等环节。 录像与回溯:通过 SDK 的录像与快照功能,可以保存实验过程,为后续分析与学术复现提供数据支撑。 XR 与沉浸体验:通过 Unity3D/VR 集成模块,SDK 能够在头显设备中实现超低延迟视频播放,满足远程教育、虚拟会议、沉浸式娱乐等需求。
像Unity3D下的RTMP或RTSP播放器一样,好多开发者苦于在Unity环境下,如何高效率低延迟的把数据采集并编码实时推送到流媒体服务器,实现Unity场景下的低延迟推拉流方案。 Android平台Unity3D的RTSP或RTMP播放器,可以参考 https://cloud.tencent.com/developer/article/1800633 本文以Android平台为例 Unity环境下采集屏幕,编码推送到RTMP服务器,然后Windows平台播放器拉取RTMP流播放,为了方便看到延迟效果,特地在Android端的Unity窗口显示了当前时间,可以看到,整体延迟在毫秒级: Unity3d EVENTID.EVENT_DANIULIVE_ERC_PUBLISHER_RECORDER_START_NEW_FILE: publisher_event = "开始一个新的录像文件 EVENTID.EVENT_DANIULIVE_ERC_PUBLISHER_ONE_RECORDER_FILE_FINISHED: publisher_event = "已生成一个录像文件
而在生态建设上,Flutter 回应 GitHub Issue 的速度更是让人惊叹,因为是真的快(closed 状态的 issue 平均解决时间为 0.29天);
除了支持APICloud, Unity3d Flutter Engine使用C/C++编写,具有低延迟输入和高帧速率的特点,不像Unity3d一样,我们是回调YUV/RGB数据,在Unity3d里面绘制,Flutter直接调用native SDK ,不谦虚的说,大牛直播SDK(Github)的这款Flutter下的RTSP/RTMP播放器,可能是首款功能强大、真正好用的Flutter RTSP/RTMP直播播放SDK。 startRecorder() async {
return _smartPlayerCall('startRecorder');
}
///
好多开发者的使用场景,需要在Windows特别是Android平台实现Unity3D的全景实时视频渲染,本文以Windows平台为例,简单介绍下具体实现: 如果是RTSP或RTMP流数据,实际上难点,主要在于拉取 RTSP或RTMP流,解析解码,然后把解码后的YUV数据,回调到Unity层,Unity创建个Sphere,创建个材质球(Material),并把材质球挂在到Sphere即可。 ,编码推送到RTMP服务器,播放端拉流回调数据并在Unity渲染为例(左侧是Unity播放端,滑动鼠标,可以实现全景内容切换): unity全景.jpg 废话不多说,大概流程如下: 本文以调用我们写的RTSP } } else { PreMouseLPos = new Vector3(0.0f, 0.0f, 0.0f); } } 以上是Unity3D 下实现RTMP或RTSP全景视频播放的大概流程,感兴趣的开发者可自行尝试。
双向通道配置 同步边转边录,便于后续回放与存证 支持设备端配置 UI/控制接口 场景四:播放端录像与截图归档系统(多终端支持)适用场景:安防录像备份、远程取证、内容审查归档 链路组合:RTSP/RTMP 为便于开发者快速了解各模块功能覆盖情况,现整理如下能力矩阵:模块类型支持平台播放协议推送协议解码方式数据回调录像能力网络策略拓展支持RTSP 播放器 SDKAndroid / iOS / Windows 、码率控制支持屏幕/摄像头采集、音视频同步轻量级 RTSP Server SDKAndroid / Linux / Windows–RTSP硬编 / 软编–是(推送端录像)支持 ONVIF / VLC / 推送; ✅ 低延迟播放模式:配置后可达 100–250ms 实际端到端延迟; ✅ 跨平台兼容性强:所有主力模块支持 Android / Windows / iOS / Linux,多数也支持 Unity3D 推荐组合: RTSP 播放模块(解码 RTSP 视频流) RTSP → RTMP 转发模块(编码并转推) 本地录像模块(边转边录) 部署环境:Linux/Android 边缘设备,arm64 架构
背景 尽管Windows平台有诸多优势,Linux平台的发展还是势不可挡,特别实在传统行业,然而Linux生态构建,总是差点意思,特别是有些常用的组件,本文基于已有的Linux平台RTSP、RTMP播放模块 ,构建Unity下的RTSP和RTMP直播播放。 先上个直观感受图,本视频以Windows平台采集秒表计时器窗体,然后编码打包传输到RTMP服务,Unity3D的Linux平台RTMP播放器拉流播放,整体延迟毫秒级。 Unity下,简单来说就是拉流解码回调,上层绘制,其实也没有那么复杂,需要注意的是DllImport的写法、之前C++结构体或枚举的转换、Unity3D对Linux的版本兼容等一些细节,对熟悉C#的开发者来说
技术背景在探讨Unity平台RTMP或RTSP直播流数据播放和录制之前,我们先简单回顾下RTSP或RTMP直播流数据在Unity平台的播放流程:通过Native RTSP或RTSP直播播放SDK回调RGB Unity3D环境下,我们之前已覆盖以下模块:Windows平台RTMP直播推送模块(采集Unity窗体、摄像头或屏幕); Windows平台RTMP|RTSP直播播放模块; Linux平台RTMP 平台RTMP|RTSP直播播放模块; iOS平台RTMP|RTSP直播播放模块。 流录像,相对来说技术难度不大,甚至不需要操作UI即可完成。 此外,录像和播放,共用一个player实例即可,播放和录像,设计需要考虑逻辑完全分离,比如可只播放或只录制,亦或播放的过程中随时录制,或者录像的过程中随时播放。
像Unity3D下的RTMP或RTSP播放器一样,好多开发者苦于在Unity环境下,如何高效率低延迟的把数据采集并编码实时推送到流媒体服务器,实现Unity场景下的低延迟推拉流方案。 Unity环境下采集屏幕,编码推送到RTMP服务器,然后Windows平台播放器拉取RTMP流播放,为了方便看到延迟效果,特地在Android端的Unity窗口显示了当前时间,可以看到,整体延迟在毫秒级: Unity3d EVENTID.EVENT_DANIULIVE_ERC_PUBLISHER_RECORDER_START_NEW_FILE: publisher_event = "开始一个新的录像文件 EVENTID.EVENT_DANIULIVE_ERC_PUBLISHER_ONE_RECORDER_FILE_FINISHED: publisher_event = "已生成一个录像文件 : publisher_event = "RTSP status code received, codeID: " + param1 + ", RTSP URL: " +
buffer状态等回调;[RTSP协议]支持RTSP TCP/UDP模式设置;[RTSP协议]支持RTSP TCP、UDP模式自动切换;[RTSP协议]支持RTSP超时时间设置,单位:秒;[RTSP协议 ;支持Unity3D接口;支持H.264扩展SEI接收模块;支持iOS 9.0及以上版本。 close接口释放资源录像模块接口详解如需录像,录像相关的接口如下:iOS播放端录像SDK接口详解调用描述接口接口描述录像设置设置录像目录SmartPlayerSetRecorderDirectory设置录像文件目录设置录像文件大小 (param3返回包含录像路径在内的录像文件名)EVENT_DANIULIVE_ERC_PLAYER_ONE_RECORDER_FILE_FINISHED已生成一个录像文件(param3返回包含录像路径在内的录像文件名 由于设备和系统比较单一,优先考虑硬解码,除了基础播放外,我们还实现了实时快照、实时录像、实时回调YUV数据、实时音量调节等,实际体验下来,iOS平台RTMP和RTSP,可以轻松毫秒级。
RTMP、WebRTC 在设备端很少原生支持,但 RTSP 是基础功能。 RTSP 是什么?它适合什么场景?RTSP 是一种控制协议,用于启动、暂停、停止媒体流。 模式设置]支持RTSP TCP/UDP模式设置; [RTSP TCP/UDP自动切换]支持RTSP TCP、UDP模式自动切换; [RTSP超时设置]支持RTSP超时时间设置,单位:秒; [RTSP 401 .265数据回调; [解码后视频数据回调]支持解码后YUV/RGB数据回调; [解码前音频数据回调]支持AAC/PCMA/PCMU数据回调; [音视频自适应]支持播放过程中,音视频信息改变后自适应; [扩展录像功能 ]完美支持和录像SDK组合使用。 场景延展与定制能力 AI分析前置 提供 YUV/PCM 数据接口,适配 AI 模型前置分析(人脸、车牌、物体检测等) 嵌入Flutter/React Native/Unity3D等 通过平台通道/插件方式
RTSP → RTMP 转协议 GB28181 设备端 MP4/FLV 录像 AI 边缘计算模块 Unity3D 播放 形成 端 → 边 → 云 多节点视频链路的统一技术体系。 x86_64)✔ DirectX 渲染 + 专用解码链路Linux(x86_64 / ARM64)✔ 工控、边缘节点场景稳定运行国产 OS(UOS / 麒麟 / 龙芯 / 飞腾)✔ 已在国产化项目落地Unity3D 执法记录仪 / 车载终端 / 特种设备特点: 分辨率高 码流大 设备功耗有限 弱网环境非常复杂 SmartPlayer 支持: 实时预览 后台录像 一路流多终端分发 移动端低延迟展示 ——适合城管 不是孤立模块,而是“全链路能力”SmartPlayer 是 SmartMediaKit 体系的一环,与其他模块天然配合: RTSP Server RTSP → RTMP 转协议 MP4 录像 GB28181 设备端 Unity3D 播放器 AI 适配模块 Edge Node / Video Node 模块 能从 设备侧 → 边缘 → 服务器 → 控制端 形成完整链路。
好多开发者在做AR、VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大、而且周期长,不适合快速出产品 等其中的一种未压缩的图像格式 比如Windows平台,我们回调YUV上来(NT_SP_E_VIDEO_FRAME_FROMAT_I420),本文以调用大牛直播SDK(Github)的Windows平台RTSP 具体播放效果如下 windows4player.png 总结 Unity3d下,做多路播放的话,首先确保调用的拉流解码数据的模块具备回调yuv/rgb数据能力,回上来后,再上层直接刷新显示即可,是不是没有你想的那么复杂
技术背景上篇文章,我们介绍了Unity平台RTMP、RTSP播放器录像功能,这里,我们详细的介绍下,做个RTSP或RTMP拉流端录像模块有哪些需要考虑的技术点? 在我们常规的考量,RTMP或RTSP流录制,无非就是拉取数据写文件而已,接口设计StartRecorder()/StopRecorder()足矣。 后再录像;支持录像事件回调,从开始录像,到录像结束均有event callback上来。 除了上述的设计,还需要确保和RTSP、RTMP播放在一个实例下,确保播放的过程中可以随时录像,录像的过程中,可以随时播放。 录像模块设计无图无真相,先看录像设置:图片开始录像、停止录像:图片Windows平台,我们提供了C++和C#的接口,本文以C++接口设计为例:先说录像设置:设置录制纯音频或纯视频: /**